<template>
  <BasicDrawer
    v-bind="$attrs"
    @register="registerDrawer"
    :title="t('routes.system.audit.auditEntity.title')"
    :isDetail="true"
  >
    <PageWrapper contentFullHeight fixedHeight dense>
      <AdVxeTable @register="registerTable" :searchInfo="filterGroupRef">
        <template #expandedRowRender="{ row }">
          <AdVxeTable @register="registerPropertyTable" :data="row.Properties" />
        </template>
      </AdVxeTable>
    </PageWrapper>
  </BasicDrawer>
</template>

<script lang="ts" setup>
  import { ref } from 'vue';
  import { useI18n } from '@/hooks/web/useI18n';

  import { FilterGroup } from '#/request';

  import { BasicDrawer, useDrawerInner } from '@/components/Drawer';
  import { PageWrapper } from '@/components/Page';
  import { AdVxeTable, useAdVxeTable } from '@/components/AdVxeTable';
  import { readAuditEntries } from '@/api/audit/auditentity';

  import { auditEntityColumns, auditPropertyColumns } from './auditentity.data';

  defineOptions({ name: 'AuditEntityDrawer' });

  const { t } = useI18n();
  const filterGroupRef = ref<FilterGroup>(new FilterGroup());

  const [registerTable, { reload }] = useAdVxeTable({
    id: 'system-audit-entity-drawer-table',
    // 表标题呈现器
    title: t('routes.system.audit.auditEntity.auditEntityList'),
    // 表格数据接口请求对象
    api: readAuditEntries,
    // 表单列信息 BasicColumn[]
    columns: auditEntityColumns,
    // 展开行
    expand: true,
    // 展开行配置项（不支持虚拟滚动）
    expandConfig: {
      // 触发方式（注：当多种功能重叠时，会同时触发）
      // default（点击按钮触发）, cell（点击单元格触发）, row（点击行触发）
      trigger: 'row',
      // height: 600,
    },
    // 使用搜索表单
    searchForm: true,
    // 是否带有边框 boolean | default（默认）, full（完整边框）, outer（外边框）, inner（内边框）, none（无边框）
    border: false,
    // 是否显示序号列
    showSeqColumn: true,
  });

  const [registerPropertyTable] = useAdVxeTable({
    id: 'system-audit-entity-drawer-property-table',
    // 表标题呈现器
    title: t('routes.system.audit.auditEntityPropertiesTitle'),
    // 表单列信息 BasicColumn[]
    columns: auditPropertyColumns,
    // 使用搜索表单
    searchForm: false,
    toolbarConfig: {
      zoom: false,
      refresh: false,
    },
    pagerConfig: { enabled: false },
    size: 'small',
    height: 600,
    // autoResize: false,
    // 是否带有边框 boolean | default（默认）, full（完整边框）, outer（外边框）, inner（内边框）, none（无边框）
    border: false,
    // 是否显示序号列
    showSeqColumn: true,
  });

  const [registerDrawer, { setDrawerProps }] = useDrawerInner(async (data) => {
    if (data.filterGroup.Operate && data.filterGroup.Rules && data.filterGroup.Groups) {
      filterGroupRef.value = data.filterGroup as FilterGroup;
    }
    await reload();
    setDrawerProps({ confirmLoading: false });
  });
</script>
